'''
实验名称：SD卡实验
接线说明：SD卡模块-->ESP32 IO
         (DAT0)(MISO)-->(19)
         (CMD)(MOSI)-->(23)
         (CLK)(SCK)-->(18)
         (CD/DAT3)(CS)-->(4)
         
实验现象：程序下载成功后，在SD卡指定目录下新建text.txt文件，写入信息，然后读取文件，在Shell
         控制台上输出读取文件中的字符信息。
         
注意事项：程序中指定的SD卡路径为：/EBOOK/text.txt
'''
 
#导入Pin模块
import machine, os
import lib.sdcard as sdcard
from machine import SPI, Pin
 
 # 初始化TFT的 CS 和 DC 引脚
tft_cs = Pin(5, Pin.OUT)
tft_dc = Pin(4, Pin.OUT)

# 初始化SD 卡的 CS 引脚
sd_cs = Pin(22, Pin.OUT)

# 确保初始状态是高电平，即未选中任何设备
tft_cs.value(1)
sd_cs.value(1)

def initSd():
    sd = sdcard.SDCard(SPI(1, sck=Pin(18), mosi=Pin(23), miso=Pin(19)), Pin(22))
    os.mount(sd,"/sd")
    print("-----sd卡文件目录/sd列表：")
    print(os.listdir("/sd"))
    print()

def writeSdFile(file_name,file_content):
    if file_name is None:   
        file_name="/sd/c.txt"
 
    print("---------------")
    f=open(file_name,"w")  #打开文件，进行写操作
    if not file_content:
        file_content="大家好，欢迎使用ESP32开发板，人生苦短，我选Python和MicroPython"
    print(f.write(file_content))  #写入
    f.close()  #关闭文件
 
def readSdFile(file_name):
    if file_name is None:   
        file_name="/sd/c.txt"
    print("============读取文件"+file_name)
    f=open(file_name)  #打开文件，进行读操作
    read_txt=f.read()
    print(read_txt)
    f.close()  #关闭文件
    return read_txt
 
 
#程序入口
if __name__=="__main__":
    initSd()
    file = "/sd/a.txt"
    content="""
    你好@
        我想学习esp32！
    daydayup!
    """
    writeSdFile(file,content)
    readSdFile(file)